package com.hera.base.web.vaadin.mantenimiento;

import static com.hera.base.util.InputData.getObjectData;
import static com.hera.base.util.InputData.getStringData;

import java.util.List;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;

import com.hera.base.util.Constantes;
import com.hera.base.util.FiltroDTO;
import com.hera.base.util.TableCustom;
import com.hera.base.web.BaseUI;
import com.hera.base.web.IConfirmDialog;
import com.hera.base.web.MantenimientoMaestroDetalle;
import com.hera.process.config.domain.Calendar;
import com.hera.process.config.domain.Department;
import com.hera.process.config.domain.LoginMethod;
import com.hera.process.config.domain.ParameterDetail;
import com.hera.process.config.rest.delegate.ConfigDelegate;
import com.hera.process.config.rest.delegate.SecurityDelegate;
import com.hera.process.security.domain.User;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.event.FieldEvents.TextChangeListener;
import com.vaadin.server.ThemeResource;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class SysUserUI extends BaseUI implements MantenimientoMaestroDetalle,ClickListener {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	/**
	 * 
	 */
	private static final long serialVersionUID = -1984117515181767974L;
	@AutoGenerated
	private VerticalLayout mainLayout;
	@AutoGenerated
	private VerticalLayout verticalLayout_2;
	@AutoGenerated
	private HorizontalLayout lytMaestro;
	@AutoGenerated
	private VerticalLayout pnlFormulario;
	@AutoGenerated
	private HorizontalLayout lytBotonera;
	@AutoGenerated
	private Button btnEliminar;
	@AutoGenerated
	private Button btnGuardar;
	@AutoGenerated
	private ComboBox cmbJefeMaestro;
	@AutoGenerated
	private ComboBox cmbDepartamentMaestro;
	@AutoGenerated
	private ComboBox cmbCalendarMaestro;
	@AutoGenerated
	private TextField txtEmailMaestro;
	@AutoGenerated
	private ComboBox cmbEstadoMaestro;
	@AutoGenerated
	private CheckBox chbCambioClaveMaestro;
	@AutoGenerated
	private TextField txtIdapDnMaestro;
	@AutoGenerated
	private TextField txtRecordatorioClaveMaestro;
	@AutoGenerated
	private ComboBox cmbLoginMethodMaestro;
	@AutoGenerated
	private TextField txtApellidoMaternoMaestro;
	@AutoGenerated
	private TextField txtApellidoPaternoMaestro;
	@AutoGenerated
	private TextField txtNombreMaestro;
	@AutoGenerated
	private TextField txtCodigoMaestro;
	@AutoGenerated
	private Label label_1;
	@AutoGenerated
	private HorizontalLayout lytTablaMaestra;
	@AutoGenerated
	private TableCustom tblfMaestro;
	/**
	 * The constructor should first build the main layout, set the
	 * composition root and then do any custom initialization.
	 *
	 * The constructor will not be automatically regenerated by the
	 * visual editor.
	 */
	public SysUserUI() {
		buildMainLayout();
		setCompositionRoot(mainLayout);

	
	}
	private static final Logger log = Logger.getLogger(SysUserUI.class);
	
	
	@Autowired
	ConfigDelegate confiDelegate;
	@Autowired
	SecurityDelegate securityDelegate;
	boolean esNuevo;
	User user;
	
	@Override
	protected void postConstruct() {
		cargarFormulario();
		buscarMaestro();
		buscarDetalle();
		
	}

	@Override
	public void cargarFormulario() {
		log.info("INICIO CARFAR FRM SYSUSER");
		esNuevo=true;
		
//		txtNombreMaestro.setNullRepresentation("");
		txtCodigoMaestro.setNullRepresentation("");
		txtNombreMaestro.setNullRepresentation("");
		txtApellidoPaternoMaestro.setNullRepresentation("");
		txtApellidoMaternoMaestro.setNullRepresentation("");
		txtRecordatorioClaveMaestro.setNullRepresentation("");
		txtIdapDnMaestro.setNullRepresentation("");
		txtEmailMaestro.setNullRepresentation("");
		
		tblfMaestro.setTitulo("Usuarios de Sistema");
		tblfMaestro.setHeight("400px");
		tblfMaestro.addColumn("idUser", "codigo", 80	, true,Long.class);
		tblfMaestro.addColumn("name", "Nombre", 120, true,String.class);
		tblfMaestro.addColumn("lastname", "Paterno", 90	, true,String.class);
		tblfMaestro.addColumn("motherlast", "Materno", 90	, true,String.class);	    
		tblfMaestro.addColumn("userLogin", "Login", 90	, true,String.class);
		tblfMaestro.construir();
		
		//LLenado Combos Login
		BeanItemContainer<LoginMethod> items = new BeanItemContainer<LoginMethod>(LoginMethod.class);
		FiltroDTO filtroDTO0=new FiltroDTO();
		List<LoginMethod> log1=confiDelegate.findAllLoginMethods(filtroDTO0);
		items.addAll(log1);
		cmbLoginMethodMaestro.setContainerDataSource(items);
		cmbLoginMethodMaestro.setItemCaptionPropertyId("name");
		//LLenado Combos Estado
		BeanItemContainer<ParameterDetail> stado = new BeanItemContainer<ParameterDetail>(ParameterDetail.class);
		stado.addAll(confiDelegate.findStatus());
		cmbEstadoMaestro.setContainerDataSource(stado);
		cmbEstadoMaestro.setItemCaptionPropertyId("name");
		//Llenando combo Jefe
		FiltroDTO filtroDTO=new FiltroDTO();
		filtroDTO.addParametro("isboss", true);
		List<User> lstUser=securityDelegate.findAllSysUsers(filtroDTO);
		BeanItemContainer<User> sysusers = new BeanItemContainer<User>(User.class);
		sysusers.addAll(lstUser);
		cmbJefeMaestro.setContainerDataSource(sysusers);
		cmbJefeMaestro.setItemCaptionPropertyId("fullName");
		//LLenando Combo Departamentos
		FiltroDTO filtroDTO2=new FiltroDTO();
		List<Department> dep1=confiDelegate.findAllDepartments(filtroDTO2);
		BeanItemContainer<Department> dep2 = new BeanItemContainer<Department>(Department.class);
		dep2.addAll(dep1);
		cmbDepartamentMaestro.setContainerDataSource(dep2);
		cmbDepartamentMaestro.setItemCaptionPropertyId("name");
		//LLenando Combo Calendar
		FiltroDTO filtroDTO3=new FiltroDTO();
		List<Calendar> cal=confiDelegate.findAllCalendars(filtroDTO3);
		BeanItemContainer<Calendar> cal2 = new BeanItemContainer<Calendar>(Calendar.class);
		cal2.addAll(cal);
		cmbCalendarMaestro.setContainerDataSource(cal2);
		cmbCalendarMaestro.setItemCaptionPropertyId("name");
		//LLenando Security Group
//		FiltroDTO filtroDTO4=new FiltroDTO();
//		List<SecurityGroup> securitygroup=confiDelegate.findAllSecurityGroups(filtroDTO4);
//		BeanItemContainer<SecurityGroup> securitygroup1 = new BeanItemContainer<SecurityGroup>(SecurityGroup.class);
//		securitygroup1.addAll(securitygroup);
//		cmbSecurityGroupMaestro.setContainerDataSource(securitygroup1);
//		cmbSecurityGroupMaestro.setItemCaptionPropertyId("name");
		
		tblfMaestro.addTextChangeListener(new TextChangeListener() {
			
			private static final long serialVersionUID = 1L;

			@Override
			public void textChange(TextChangeEvent event) {
//				cargarFormulario();
				buscarMaestro(event);
			}
		});
		
		tblfMaestro.addValueChangeListener(new ValueChangeListener() {
			private static final long serialVersionUID = 1L;
			@Override
			public void valueChange(ValueChangeEvent event) {
				removeStyleNotValidMaestroControllers();
				user=(User)tblfMaestro.getSelectedItem(event);
				esNuevo=(user==null);
				if(esNuevo){
					limpiarMaestro();
				}else{
					btnEliminar.setVisible(true);
					btnGuardar.setCaption("Modificar");
					txtCodigoMaestro.setValue(user.getUserLogin());
					txtNombreMaestro.setValue(user.getName());
					txtApellidoPaternoMaestro.setValue(user.getLastname());
					txtApellidoMaternoMaestro.setValue(user.getMotherlast());
					txtRecordatorioClaveMaestro.setValue(user.getPasswordHint());
					txtIdapDnMaestro.setValue(user.getUserLdapDn());
					txtEmailMaestro.setValue(user.getEmail());
					cmbJefeMaestro.setValue(user.getBoss());
					cmbEstadoMaestro.setValue(user.getStatus());
					cmbLoginMethodMaestro.setValue(user.getLoginMethod());
					//cmbSecurityGroupMaestro.setValue(user.getSecurityGroup());
					cmbCalendarMaestro.setValue(user.getCalendar());
					cmbDepartamentMaestro.setValue(user.getDepartment());
					chbCambioClaveMaestro.setValue("S".equals(""+user.getReqPasswordChange()));
				}
				
			}
		});
		
		btnGuardar.addClickListener(this);
		btnEliminar.addClickListener(this);
	}
	
	public void removeStyleNotValidMaestroControllers(){
		txtApellidoMaternoMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
		txtApellidoPaternoMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);		
		txtCodigoMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
		txtEmailMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
		txtIdapDnMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
		txtNombreMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
		txtRecordatorioClaveMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO);
			
		cmbCalendarMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);
		cmbDepartamentMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);
		cmbEstadoMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);
		cmbJefeMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);
		cmbLoginMethodMaestro.removeStyleName(Constantes.VALIDACION_CAMPOS.CAMPO_REQUERIDO_VACIO2);		
	}	

	@Override
	public void buscarMaestro() {
		buscarMaestro(null);
		
	}

	@Override
	public void buscarMaestro(TextChangeEvent event) {
		log.info("inicio buscarMaestro");
		FiltroDTO filtroDTO=tblfMaestro.getFiltroDTO(event);
		filtroDTO.addOrdenamientoAscendente("idUser");
		List<User> lstUser=securityDelegate.findAllSysUsers(filtroDTO);
		tblfMaestro.setLstData(lstUser);
		limpiarMaestro();
		log.info("fin buscarMaestro");
		
	}

	@Override
	public void limpiarMaestro() {
		log.info("Inicio LimpiarMaestro");
		btnEliminar.setVisible(false);
		btnGuardar.setCaption("Nuevo");
		txtCodigoMaestro.setValue("");
		txtNombreMaestro.setValue("");
		txtApellidoMaternoMaestro.setValue("");
		txtApellidoPaternoMaestro.setValue("");
		cmbLoginMethodMaestro.setValue(null);
		txtRecordatorioClaveMaestro.setValue("");
		txtIdapDnMaestro.setValue("");
		//cmbSecurityGroupMaestro.setValue(null);
		cmbEstadoMaestro.setValue(null);
		txtEmailMaestro.setValue("");
		cmbCalendarMaestro.setValue(null);
		cmbDepartamentMaestro.setValue(null);
		cmbJefeMaestro.setValue(null);
		chbCambioClaveMaestro.setValue(null);
	}

	@Override
	public void eliminarMaestro() {
		log.info("inicio eliminarMaestro");
		mostrarConfirmacion(new IConfirmDialog() {			
			@Override
			public void cancelar(Button event, Window window) {
				window.close();
			}			
			@Override
			public void aceptar(Button event, Window window) {
				window.close();
				securityDelegate.deleteSysuser(user);
				buscarMaestro();
				limpiarMaestro();
			}
		});		
		log.info("fin eliminarMaestro");
	}

	@Override
	public void guardarMaestro() {
		log.info("inicio GuardarMaestro");
		if(esNuevo){
			user= new User();
			obtenerDatosFormulario(user);
			securityDelegate.createSysUser(user);
		}else {
			obtenerDatosFormulario(user);
			securityDelegate.updatedSysUser(user);
		}
		limpiarMaestro();
		buscarMaestro(); 
		log.info("fin guardarMaestro");
	}
	
	@Override
	public void buttonClick(ClickEvent event) {
		removeStyleNotValidMaestroControllers();
		if(event.getButton().equals(btnEliminar)){
			eliminarMaestro();
		}else if(event.getButton().equals(btnGuardar)){
			guardarMaestro();
		}
	}
	
	private void obtenerDatosFormulario(User user){
		
		user.setUserLogin(getStringData(txtCodigoMaestro,"Codigo"));
		user.setName(getStringData(txtNombreMaestro,"Nombre"));
		user.setMotherlast(getStringData(txtApellidoMaternoMaestro,"ApellidoMaterno"));
		user.setLastname(getStringData(txtApellidoPaternoMaestro,"ApellidoPaterno"));
		user.setPasswordHint(getStringData(txtRecordatorioClaveMaestro,"RecordatorioClave"));
		user.setUserLdapDn(getStringData(txtIdapDnMaestro));
		user.setEmail(getStringData(txtEmailMaestro,"Email"));
		user.setLoginMethod(getObjectData(cmbLoginMethodMaestro,LoginMethod.class));
		user.setCalendar(getObjectData(cmbCalendarMaestro, Calendar.class));
		user.setDepartment(getObjectData(cmbDepartamentMaestro, Department.class));
	//	user.setSecurityGroup(getObjectData(cmbSecurityGroupMaestro, SecurityGroup.class));
		user.setBoss(getObjectData(cmbJefeMaestro, User.class));
		user.setStatus(getObjectData(cmbEstadoMaestro, ParameterDetail.class));
		user.setReqPasswordChange((chbCambioClaveMaestro.getValue())?'S':'N');
	}

	@Override
	public void buscarDetalle() {
		
		
	}

	@Override
	public void buscarDetalle(TextChangeEvent event) {
	
		
	}

	@Override
	public void limpiarDetalle() {
		
		
	}

	@Override
	public void eliminarDetalle() {
		
		
	}

	@Override
	public void guardarDetalle() {
		
		
	}

	

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("-1px");
		mainLayout.setHeight("100%");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("-1px");
		setHeight("100.0%");
		
		// verticalLayout_2
		verticalLayout_2 = buildVerticalLayout_2();
		mainLayout.addComponent(verticalLayout_2);
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildVerticalLayout_2() {
		// common part: create layout
		verticalLayout_2 = new VerticalLayout();
		verticalLayout_2.setImmediate(false);
		verticalLayout_2.setWidth("-1px");
		verticalLayout_2.setHeight("-1px");
		verticalLayout_2.setMargin(false);
		verticalLayout_2.setSpacing(true);
		
		// lytMaestro
		lytMaestro = buildLytMaestro();
		verticalLayout_2.addComponent(lytMaestro);
		
		return verticalLayout_2;
	}

	@AutoGenerated
	private HorizontalLayout buildLytMaestro() {
		// common part: create layout
		lytMaestro = new HorizontalLayout();
		lytMaestro.setImmediate(false);
		lytMaestro.setWidth("-1px");
		lytMaestro.setHeight("-1px");
		lytMaestro.setMargin(false);
		
		// lytTablaMaestra
		lytTablaMaestra = buildLytTablaMaestra();
		lytMaestro.addComponent(lytTablaMaestra);
		
		// pnlFormulario
		pnlFormulario = buildPnlFormulario();
		lytMaestro.addComponent(pnlFormulario);
		
		return lytMaestro;
	}

	@AutoGenerated
	private HorizontalLayout buildLytTablaMaestra() {
		// common part: create layout
		lytTablaMaestra = new HorizontalLayout();
		lytTablaMaestra.setImmediate(false);
		lytTablaMaestra.setWidth("570px");
		lytTablaMaestra.setHeight("320px");
		lytTablaMaestra.setMargin(false);
		lytTablaMaestra.setSpacing(true);
		
		// tblfMaestro
		tblfMaestro = new TableCustom();
		tblfMaestro.setImmediate(false);
		tblfMaestro.setWidth("-1px");
		tblfMaestro.setHeight("-1px");
		lytTablaMaestra.addComponent(tblfMaestro);
		
		return lytTablaMaestra;
	}

	@AutoGenerated
	private VerticalLayout buildPnlFormulario() {
		// common part: create layout
		pnlFormulario = new VerticalLayout();
		pnlFormulario.setImmediate(false);
		pnlFormulario.setWidth("-1px");
		pnlFormulario.setHeight("-1px");
		pnlFormulario.setMargin(false);
		pnlFormulario.setSpacing(true);
		
		// label_1
		label_1 = new Label();
		label_1.setStyleName("titulo");
		label_1.setImmediate(false);
		label_1.setWidth("-1px");
		label_1.setHeight("-1px");
		label_1.setValue("Formulario de Registro");
		pnlFormulario.addComponent(label_1);
		pnlFormulario.setComponentAlignment(label_1, new Alignment(20));
		
		// txtCodigoMaestro
		txtCodigoMaestro = new TextField();
		txtCodigoMaestro.setImmediate(false);
		txtCodigoMaestro.setCaption("Codigo: ");
		txtCodigoMaestro.setWidth("200px");
		txtCodigoMaestro.setHeight("-1px");
		txtCodigoMaestro.setInputPrompt("Codigo");
		pnlFormulario.addComponent(txtCodigoMaestro);
		
		// txtNombreMaestro
		txtNombreMaestro = new TextField();
		txtNombreMaestro.setStyleName("fieldRequired");
		txtNombreMaestro.setImmediate(false);
		txtNombreMaestro.setCaption("Nombre: *");
		txtNombreMaestro.setWidth("200px");
		txtNombreMaestro.setHeight("-1px");
		txtNombreMaestro.setInputPrompt("Nombre");
		pnlFormulario.addComponent(txtNombreMaestro);
		
		// txtApellidoPaternoMaestro
		txtApellidoPaternoMaestro = new TextField();
		txtApellidoPaternoMaestro.setStyleName("fieldRequired");
		txtApellidoPaternoMaestro.setImmediate(false);
		txtApellidoPaternoMaestro.setCaption("Apellido Paterno: *");
		txtApellidoPaternoMaestro.setWidth("200px");
		txtApellidoPaternoMaestro.setHeight("-1px");
		txtApellidoPaternoMaestro.setInputPrompt("Apellido Paterno");
		pnlFormulario.addComponent(txtApellidoPaternoMaestro);
		
		// txtApellidoMaternoMaestro
		txtApellidoMaternoMaestro = new TextField();
		txtApellidoMaternoMaestro.setImmediate(false);
		txtApellidoMaternoMaestro.setCaption("Apellido Materno: ");
		txtApellidoMaternoMaestro.setWidth("200px");
		txtApellidoMaternoMaestro.setHeight("-1px");
		txtApellidoMaternoMaestro.setInputPrompt("Apellido Materno");
		pnlFormulario.addComponent(txtApellidoMaternoMaestro);
		
		// cmbLoginMethodMaestro
		cmbLoginMethodMaestro = new ComboBox();
		cmbLoginMethodMaestro.setStyleName("fieldRequired");
		cmbLoginMethodMaestro.setImmediate(false);
		cmbLoginMethodMaestro.setCaption("Metodo de Acceso: *");
		cmbLoginMethodMaestro.setWidth("200px");
		cmbLoginMethodMaestro.setHeight("-1px");
		cmbLoginMethodMaestro.setInputPrompt("Metodo de Acceso");
		pnlFormulario.addComponent(cmbLoginMethodMaestro);
		
		// txtRecordatorioClaveMaestro
		txtRecordatorioClaveMaestro = new TextField();
		txtRecordatorioClaveMaestro.setImmediate(false);
		txtRecordatorioClaveMaestro.setCaption("Recordatorio de Clave");
		txtRecordatorioClaveMaestro.setWidth("200px");
		txtRecordatorioClaveMaestro.setHeight("-1px");
		txtRecordatorioClaveMaestro.setInputPrompt("Recordatorio de Clave");
		pnlFormulario.addComponent(txtRecordatorioClaveMaestro);
		
		// txtIdapDnMaestro
		txtIdapDnMaestro = new TextField();
		txtIdapDnMaestro.setImmediate(false);
		txtIdapDnMaestro.setCaption("Ldap DN: ");
		txtIdapDnMaestro.setWidth("200px");
		txtIdapDnMaestro.setHeight("-1px");
		txtIdapDnMaestro.setInputPrompt("Ldap DN");
		pnlFormulario.addComponent(txtIdapDnMaestro);
		
		// chbCambioClaveMaestro
		chbCambioClaveMaestro = new CheckBox();
		chbCambioClaveMaestro.setCaption("Cambio Contraseña");
		chbCambioClaveMaestro.setImmediate(false);
		chbCambioClaveMaestro.setWidth("200px");
		chbCambioClaveMaestro.setHeight("-1px");
		pnlFormulario.addComponent(chbCambioClaveMaestro);
		
		// cmbEstadoMaestro
		cmbEstadoMaestro = new ComboBox();
		cmbEstadoMaestro.setStyleName("fieldRequired");
		cmbEstadoMaestro.setImmediate(false);
		cmbEstadoMaestro.setCaption("Estado: *");
		cmbEstadoMaestro.setInputPrompt("Estado");
		cmbEstadoMaestro.setWidth("200px");
		cmbEstadoMaestro.setHeight("-1px");
		pnlFormulario.addComponent(cmbEstadoMaestro);
		
		// txtEmailMaestro
		txtEmailMaestro = new TextField();
		txtEmailMaestro.setStyleName("fieldRequired");
		txtEmailMaestro.setImmediate(false);
		txtEmailMaestro.setCaption("Email: *");
		txtEmailMaestro.setWidth("200px");
		txtEmailMaestro.setHeight("-1px");
		txtEmailMaestro.setInputPrompt("Email");
		pnlFormulario.addComponent(txtEmailMaestro);
		
		// cmbCalendarMaestro
		cmbCalendarMaestro = new ComboBox();
		cmbCalendarMaestro.setStyleName("fieldRequired");
		cmbCalendarMaestro.setImmediate(false);
		cmbCalendarMaestro.setCaption("Calendario: *");
		cmbCalendarMaestro.setInputPrompt("Calendario");
		cmbCalendarMaestro.setWidth("200px");
		cmbCalendarMaestro.setHeight("-1px");
		pnlFormulario.addComponent(cmbCalendarMaestro);
		
		// cmbDepartamentMaestro
		cmbDepartamentMaestro = new ComboBox();
		cmbDepartamentMaestro.setStyleName("fieldRequired");
		cmbDepartamentMaestro.setImmediate(false);
		cmbDepartamentMaestro.setCaption("Departamento: *");
		cmbDepartamentMaestro.setInputPrompt("Departamento");
		cmbDepartamentMaestro.setWidth("200px");
		cmbDepartamentMaestro.setHeight("-1px");
		pnlFormulario.addComponent(cmbDepartamentMaestro);
		
		// cmbJefeMaestro
		cmbJefeMaestro = new ComboBox();
		cmbJefeMaestro.setImmediate(false);
		cmbJefeMaestro.setCaption("Jefe: ");
		cmbJefeMaestro.setInputPrompt("Jefe");
		cmbJefeMaestro.setWidth("200px");
		cmbJefeMaestro.setHeight("-1px");
		pnlFormulario.addComponent(cmbJefeMaestro);
		
		// lytBotonera
		lytBotonera = buildLytBotonera();
		pnlFormulario.addComponent(lytBotonera);
		
		return pnlFormulario;
	}

	@AutoGenerated
	private HorizontalLayout buildLytBotonera() {
		// common part: create layout
		lytBotonera = new HorizontalLayout();
		lytBotonera.setStyleName("buttoncust");
		lytBotonera.setImmediate(false);
		lytBotonera.setWidth("-1px");
		lytBotonera.setHeight("-1px");
		lytBotonera.setMargin(false);
		lytBotonera.setSpacing(true);
		
		// btnGuardar
		btnGuardar = new Button();
		btnGuardar.setCaption("");
		btnGuardar.setIcon(new ThemeResource("images/save_16_2.png"));
		btnGuardar.setDescription("Guardar");
		btnGuardar.setImmediate(true);
		btnGuardar.setWidth("-1px");
		btnGuardar.setHeight("-1px");
		lytBotonera.addComponent(btnGuardar);
		
		// btnEliminar
		btnEliminar = new Button();
		btnEliminar.setCaption("");
		btnEliminar.setIcon(new ThemeResource("images/trash_16_2.png"));
		btnEliminar.setDescription("Eliminar");
		btnEliminar.setImmediate(true);
		btnEliminar.setWidth("-1px");
		btnEliminar.setHeight("-1px");
		lytBotonera.addComponent(btnEliminar);
		
		return lytBotonera;
	}

}
